package bszt.jd;

import java.util.Scanner;

public class Code02 {

    /**
     * 问题描述
     * LYA是一位热爱DIY的少女，她最近迷上了一种特殊的积木拼接游戏。这种积木呈长条状，每个单位长度的高度只有1或2两种可能。LYA现在手里有两块这样的积木，长度分别为n和m
     * 她想要将这两块积木拼接在一起，形成一个新的积木作品。拼接时可以有重叠，也可以有间隙，但最终拼接后的积木高度不能超过3
     * LYA希望在满足这个条件的前提下，使最终拼接出的积木尽可能短
     * 你能帮助LYA计算出拼接后积木的最短可能长度吗？
     * <p></p>
     * 输入格式
     * 第一行包含两个正整数n和m，分别表示两块积木的长度
     * 第二行包含n个整数，表示第一块积木每个单位长度的高度。
     * 第三行包含m个整数，表示第二块积木每个单位长度的高度。
     * <p></p>
     * 输出格式
     * 输出一个整数，表示拼接后积木的最短可能长度
     */


    public static int checkOverlap(String s1, String s2) {
        // 检查两个积木的重叠情况，计算最短拼接长度
        int res = s1.length() + s2.length();
        for (int i = 0; i < s1.length(); i++) {
            boolean isValid = true;
            for (int j = 0; j < s2.length() && i + j < s1.length(); j++) {
                if (s1.charAt(i + j) - '0' + s2.charAt(j) - '0' > 3) {
                    isValid = false;
                    break;
                }
            }
            if (isValid) {
                res = Math.min(res, Math.max(s1.length(), i + s2.length()));
            }
        }
        return res;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 读取输入
        int len1 = sc.nextInt();
        int len2 = sc.nextInt();
        String str1 = sc.next();
        String str2 = sc.next();
        // 计算两种拼接顺序的最短长度，取较小值
        int result = Math.min(checkOverlap(str1, str2), checkOverlap(str2, str1));
        System.out.println(result);
    }
}
